﻿using Furion.DatabaseAccessor;

namespace YFurion.Entities
{
    /// <summary>
    /// A shortcut of <see cref="TKey{TKey}"/> for most used primary key type (<see cref="long"/>).
    /// </summary>
    public interface IYEntity : IYEntityOfTKey<long>
    {
    }

    /// <summary>
    /// A shortcut of <see cref="TKey{TKey}"/> for most used primary key type (<see cref="long"/>).
    /// </summary>
    /// <typeparam name="TDbContextLocator1"></typeparam>
    public interface IYEntity<TDbContextLocator1> : IYEntityOfTKey<long, TDbContextLocator1>
        where TDbContextLocator1 : class, IDbContextLocator
    {
    }

    /// <summary>
    /// A shortcut of <see cref="TKey{TKey}"/> for most used primary key type (<see cref="long"/>).
    /// </summary>
    /// <typeparam name="TDbContextLocator1"></typeparam>
    /// <typeparam name="TDbContextLocator2"></typeparam>
    public interface IYEntity<TDbContextLocator1, TDbContextLocator2> : IYEntityOfTKey<long, TDbContextLocator1, TDbContextLocator2>
        where TDbContextLocator1 : class, IDbContextLocator
        where TDbContextLocator2 : class, IDbContextLocator
    {
    }

    /// <summary>
    /// A shortcut of <see cref="TKey{TKey}"/> for most used primary key type (<see cref="long"/>).
    /// </summary>
    /// <typeparam name="TDbContextLocator1"></typeparam>
    /// <typeparam name="TDbContextLocator2"></typeparam>
    /// <typeparam name="TDbContextLocator3"></typeparam>
    public interface IYEntity<TDbContextLocator1, TDbContextLocator2, TDbContextLocator3> : IYEntityOfTKey<long, TDbContextLocator1, TDbContextLocator2, TDbContextLocator3>
        where TDbContextLocator1 : class, IDbContextLocator
        where TDbContextLocator2 : class, IDbContextLocator
        where TDbContextLocator3 : class, IDbContextLocator
    {
    }
}
